#ifndef FKQMLARGUMENT_H
#define FKQMLARGUMENT_H

#if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0))
    #include <QJSValue>
    #define FKQmlArgument QJSValue
    #define FKQmlArgumentToVariant(val) val.toVariant()
    #define FKQmlSignal1(func) SIGNAL(func(QJSValue))
    #define FKQmlSignal2(func) SIGNAL(func(QJSValue,QJSValue))
    #define FKQmlSignal3(func) SIGNAL(func(QJSValue,QJSValue,QJSValue))
    #define FKQmlSignal4(func) SIGNAL(func(QJSValue,QJSValue,QJSValue,QJSValue))
    #define FKQmlSlot1(func) SLOT(func(QJSValue))
    #define FKQmlSlot2(func) SLOT(func(QJSValue,QJSValue))
    #define FKQmlSlot3(func) SLOT(func(QJSValue,QJSValue,QJSValue))
    #define FKQmlSlot4(func) SLOT(func(QJSValue,QJSValue,QJSValue,QJSValue))
#else
    #include <QVariant>
    #define FKQmlArgument QVariant
    #define FKQmlArgumentToVariant(val) val
    #define FKQmlSignal1(func) SIGNAL(func(QVariant))
    #define FKQmlSignal2(func) SIGNAL(func(QVariant,QVariant))
    #define FKQmlSignal3(func) SIGNAL(func(QVariant,QVariant,QVariant))
    #define FKQmlSignal4(func) SIGNAL(func(QVariant,QVariant,QVariant,QVariant))
    #define FKQmlSlot1(func) SLOT(func(QVariant))
    #define FKQmlSlot2(func) SLOT(func(QVariant,QVariant))
    #define FKQmlSlot3(func) SLOT(func(QVariant,QVariant,QVariant))
    #define FKQmlSlot4(func) SLOT(func(QVariant,QVariant,QVariant,QVariant))
#endif

#endif // FKQMLARGUMENT_H
